An Interprocedural Parallelizing Compiler and Its Support for Memory Hierarchy Research
نویسندگان
چکیده
We present several new compiler techniques employed by our interprocedural parallelizing research compiler, Panorama, to improve loop parallelization and the eeciency of memory references. We rst present an overview of the compiler and its associated memory architecture simulation environments. We then present an interprocedural array dataaow analysis, using guarded array regions, for automatic array privatization , an interprocedural static proole analysis, and a graph coloring scheme for parallel task assignment and data allocation which aims at reducing remote memory references while maintaining loop parallelism.
منابع مشابه
Interprocedural Analysis to Support Static Scheduling of Parallel Loops and Data Allocation
We present an interprocedural program analysis to support static loop scheduling and data allocation with the objective of reducing remote memory references on CC-NUMA multiprocessors. Given a program which consists of parallel regions in the form of DOALL loops and sequential regions, we build an interprocedural control ow graph and annotate it with array reference information. We then constru...
متن کاملCompiler Analysis for Cache Coherence: Interprocedural Array Data-Flow Analysis and Its Impact on Cache Performance
ÐIn this paper, we present compiler algorithms for detecting references to stale data in shared-memory multiprocessors. The algorithm consists of two key analysis techniques, stale reference detection and locality preserving analysis. While the stale reference detection finds the memory reference patterns that may violate cache coherence, the locality preserving analysis minimizes the number of...
متن کاملInterprocedural Analysis for Parallelization
This paper presents an extensive empirical evaluation of an interprocedural parallelizing compiler, developed as part of the Stanford SUIF compiler system. The system incorporates a comprehensive and integrated collection of analyses, including privatization and reduction recognition for both array and scalar variables, and symbolic analysis of array subscripts. The interprocedural analysis fra...
متن کاملInterprocedural Array Data Flow Analysis for Cache Coherence
The presence of procedures and procedure calls introduces side eeects, which complicate the analysis of stale reference detection in compiler-directed cache coherence schemes 4, 3, 9]. Previous compiler algorithms use the invalidation of an entire cache at procedure boundary 5, 8] or inlining 8] to avoid reference marking interprocedurally. However, frequent cache invalidations will result in p...
متن کاملLlvm: an Infrastructure for Multi-stage Optimization by Chris Arthur Lattner
Modern programming languages and software engineering principles are causing increasing problems for compiler systems. Traditional approaches, which use a simple compile-link-execute model, are unable to provide adequate application performance under the demands of the new conditions. Traditional approaches to interprocedural and profile-driven compilation can provide the application performanc...
متن کامل